
#pragma once

#ifndef UDBEXTRUDEDSURF_H
#define UDBEXTRUDEDSURF_H

#include "zdbsurf.h"

#pragma pack(push, 8)
class UcDbExtrudedSurface: public UcDbSurface
{
public:
    UcDbExtrudedSurface ();
    virtual ~UcDbExtrudedSurface();
    UCDB_DECLARE_MEMBERS(UcDbExtrudedSurface);
    virtual Ucad::ErrorStatus createExtrudedSurface ( UcDbEntity* pSweepEnt,
        const UcGeVector3d& directionVec, UcDbSweepOptions& sweepOptions );
    UcDbEntity*   getSweepEntity () const;
    UcGeVector3d       getSweepVec () const;
    Ucad::ErrorStatus  setSweepVec ( const UcGeVector3d& sweepVec );
    double             getHeight () const;
    Ucad::ErrorStatus  setHeight ( double height );
    void               getSweepOptions ( UcDbSweepOptions& sweepOptions ) const;
    Ucad::ErrorStatus  setSweepOptions ( const UcDbSweepOptions& sweepOptions );
    Ucad::ErrorStatus  setExtrude ( const UcGeVector3d& sweepVec,
                                    const UcDbSweepOptions& sweepOptions );
    virtual void list() const;

	virtual Ucad::ErrorStatus dwgInFields(UcDbDwgFiler* pFiler);
	virtual Ucad::ErrorStatus dwgOutFields(UcDbDwgFiler* pFiler) const;
	virtual Ucad::ErrorStatus dxfInFields(UcDbDxfFiler* pFiler);
	virtual Ucad::ErrorStatus dxfOutFields(UcDbDxfFiler* pFiler) const;

    virtual Ucad::ErrorStatus getClassID(CLSID* pClsid) const;
    virtual Ucad::ErrorStatus getGripPoints ( UcGePoint3dArray&  gripPoints,
                                              UcDbIntArray&  osnapModes,
                                              UcDbIntArray &  geomIds ) const;
    virtual Ucad::ErrorStatus getGripPoints ( UcDbGripDataPtrArray& grips,
                                              const double curViewUnitSize,
                                              const int gripSize,
                                              const UcGeVector3d& curViewDir,
                                              const int bitflags ) const;
    virtual Ucad::ErrorStatus moveGripPointsAt ( const UcDbIntArray& indices,
                                                 const UcGeVector3d& offset );
    virtual Ucad::ErrorStatus moveStretchPointsAt ( const UcDbIntArray& indices,
                                                    const UcGeVector3d& offset );

    virtual Ucad::ErrorStatus getGripEntityUCS ( const void* pGripAppData,
                                                 UcGeVector3d& normalVec,
                                                 UcGePoint3d& origin,
                                                 UcGeVector3d& xAxis ) const;

    virtual bool isDependent() const;

};

#pragma pack(pop)

#endif 
